// K线图表配置文件
const KLINE_CONFIG = {
    // 币安API配置
    BINANCE: {
        BASE_URL: 'https://fapi.binance.com/fapi/v1/indexPriceKlines',
        CORS_PROXY: 'https://api.allorigins.win/get?url=',
        SUPPORTED_SYMBOLS: ['ETHUSDT', 'BTCUSDT'],
        SUPPORTED_INTERVALS: ['1m', '5m', '15m', '1h', '4h', '1d'],
        DEFAULT_LIMIT: 500,
        MAX_LIMIT: 1000
    },
    
    // WebSocket配置（复用现有配置）
    WEBSOCKET: {
        URL: 'ws://localhost:8770',
        RECONNECT_INTERVAL: 3000,
        PING_INTERVAL: 30000
    },
    
    // 图表配置
    CHART: {
        DEFAULT_SYMBOL: 'ETHUSDT',
        DEFAULT_INTERVAL: '1h',
        COLORS: {
            UP: '#26a69a',
            DOWN: '#ef5350',
            UP_BACKGROUND: 'rgba(38, 166, 154, 0.1)',
            DOWN_BACKGROUND: 'rgba(239, 83, 80, 0.1)'
        },
        HEIGHT: 600,
        UPDATE_MODE: 'none', // 无动画更新
        TIMEZONE: 'Asia/Shanghai'
    },
    
    // 时间间隔映射
    INTERVAL_MAP: {
        '1m': {
            ms: 60 * 1000,
            unit: 'minute',
            format: 'HH:mm'
        },
        '5m': {
            ms: 5 * 60 * 1000,
            unit: 'minute',
            format: 'HH:mm'
        },
        '15m': {
            ms: 15 * 60 * 1000,
            unit: 'minute',
            format: 'HH:mm'
        },
        '1h': {
            ms: 60 * 60 * 1000,
            unit: 'hour',
            format: 'MM-dd HH:mm'
        },
        '4h': {
            ms: 4 * 60 * 60 * 1000,
            unit: 'hour',
            format: 'MM-dd HH:mm'
        },
        '1d': {
            ms: 24 * 60 * 60 * 1000,
            unit: 'day',
            format: 'MM-dd'
        }
    },
    
    // 模拟数据配置
    MOCK_DATA: {
        ENABLED: true, // 当API失败时启用模拟数据
        BASE_PRICES: {
            'ETHUSDT': 3800,
            'BTCUSDT': 50000
        },
        VOLATILITY_PERCENT: 0.05, // 价格波动百分比
        INTRADAY_VOLATILITY: 0.02 // 日内波动百分比
    },
    
    // UI配置
    UI: {
        LOADING_TIMEOUT: 30000, // 30秒加载超时
        ERROR_DISPLAY_TIME: 5000, // 错误消息显示时间
        PRICE_UPDATE_ANIMATION: false, // 价格更新动画
        AUTO_REFRESH_INTERVAL: 0 // 自动刷新间隔（0=禁用）
    },
    
    // 调试配置
    DEBUG: {
        ENABLED: true,
        LOG_WEBSOCKET: true,
        LOG_API_CALLS: true,
        LOG_CHART_UPDATES: false
    }
};

// 工具函数
const KlineUtils = {
    // 获取时间间隔毫秒数
    getIntervalMs: (interval) => {
        return KLINE_CONFIG.INTERVAL_MAP[interval]?.ms || 60 * 60 * 1000;
    },
    
    // 获取时间单位
    getTimeUnit: (interval) => {
        return KLINE_CONFIG.INTERVAL_MAP[interval]?.unit || 'hour';
    },
    
    // 获取时间格式
    getTimeFormat: (interval) => {
        return KLINE_CONFIG.INTERVAL_MAP[interval]?.format || 'MM-dd HH:mm';
    },
    
    // 构建币安API URL
    buildBinanceUrl: (symbol, interval, limit = null, startTime = null, endTime = null) => {
        const params = new URLSearchParams({
            pair: symbol,
            interval: interval
        });
        
        if (limit) params.append('limit', limit.toString());
        if (startTime) params.append('startTime', startTime.toString());
        if (endTime) params.append('endTime', endTime.toString());
        
        return `${KLINE_CONFIG.BINANCE.BASE_URL}?${params}`;
    },
    
    // 构建代理URL
    buildProxyUrl: (url) => {
        return `${KLINE_CONFIG.BINANCE.CORS_PROXY}${encodeURIComponent(url)}`;
    },
    
    // 验证交易对
    isValidSymbol: (symbol) => {
        return KLINE_CONFIG.BINANCE.SUPPORTED_SYMBOLS.includes(symbol);
    },
    
    // 验证时间间隔
    isValidInterval: (interval) => {
        return KLINE_CONFIG.BINANCE.SUPPORTED_INTERVALS.includes(interval);
    },
    
    // 格式化价格
    formatPrice: (price, decimals = 2) => {
        if (typeof price !== 'number' || isNaN(price)) return '--';
        return price.toFixed(decimals);
    },
    
    // 格式化百分比
    formatPercent: (value, decimals = 2) => {
        if (typeof value !== 'number' || isNaN(value)) return '--';
        const sign = value >= 0 ? '+' : '';
        return `${sign}${value.toFixed(decimals)}%`;
    },
    
    // 日志函数
    log: (message, ...args) => {
        if (KLINE_CONFIG.DEBUG.ENABLED) {
            console.log(`[KlineChart] ${message}`, ...args);
        }
    },
    
    // 错误日志
    error: (message, ...args) => {
        console.error(`[KlineChart] ${message}`, ...args);
    }
};

// 导出配置
if (typeof module !== 'undefined' && module.exports) {
    module.exports = { KLINE_CONFIG, KlineUtils };
}

// 全局配置（浏览器环境）
if (typeof window !== 'undefined') {
    window.KLINE_CONFIG = KLINE_CONFIG;
    window.KlineUtils = KlineUtils;
}
